#include "Shape.h"

void Shape::getIntegerDirection(int &x, int &y)
{
	int flagX, flagY;
	flagX = flagY = 0;
	
	if(isDirX(abs(m_sumDirX))){
		flagX = int(m_sumDirX);
		if(m_sumDirX > 0) m_sumDirX = m_sumDirX - 1 + m_dirX;
		else if(m_sumDirX < 0) m_sumDirX = m_sumDirX + 1 + m_dirX; 
	}
	
	else m_sumDirX = m_sumDirX + m_dirX;

	if(isDirY(abs(m_sumDirY))){
        flagY = int(m_sumDirY);
		if(m_sumDirY > 0)  m_sumDirY = m_sumDirY - 1 + m_dirY;
		else if(m_sumDirY < 0) m_sumDirY = m_sumDirY + 1 + m_dirY; 
	}

	else m_sumDirY = m_sumDirY + m_dirY;

	x  = flagX;
	y  = flagY;

	m_prevDirX = flagX;
	m_prevDirY = flagY;
}


void Shape::getPrevDirection(int &x, int &y)
{
	x = m_prevDirX;
	y= m_prevDirY;
}


void Shape::getIntegerDirectionExplicitly(int &dirX, int &dirY)
{
	dirX = int(m_sumDirX);
	dirY = int(m_sumDirY);
}

bool Shape::isDirX(float x)
{
	if (x >= 1)
	{
		return true;
	}
	
	return false;
}


bool Shape::isDirY(float y)
{
	if (y >= 1)
	{
			return true;
	}
	
	return false;
}

void Shape::getOriginalDirection(float &x, float &y)
{
	x = m_dirX;
	y = m_dirY;
}


void Shape::resetDirectionX()
{
	if(m_sumDirX > 0) m_sumDirX = -1;
	else if(m_sumDirX < 0) m_sumDirX = 1;
	m_dirX = -m_dirX;
}

void Shape::resetDirectionY()
{

	if(m_sumDirY > 0) m_sumDirY = -1;
	else if(m_sumDirY < 0) m_sumDirY = 1;
	m_dirY = -m_dirY;
}



void Shape::setMove(float x, float y)
{
	m_dirX = m_sumDirX = x;
	m_dirY = m_sumDirY = y;
}